home *** CD-ROM | disk | FTP | other *** search
- #ifndef lint
- static char rcsid[] = "$Header: xmain.c,v 1.7 87/05/19 17:19:25 schoch Exp $";
- #endif
-
- #include <strings.h>
- #include <ctype.h>
- #include <sys/signal.h>
- #include <errno.h>
- #include "externs.h"
-
- extern int errno;
-
- LIST dirlist[7];
- LIST piecelocs[2];
- int kingloc[2];
- u_char whose[100];
- u_char occupant[100];
- u_char virgin[100];
- u_char ghost[100];
- u_char captured[32];
- u_char ourcolor = UNSET;
- u_char theircolor = UNSET;
- u_char state = PLAYING, color=WHITE;
- bool iamserver = UNSET;
- bool drawok[2];
- bool resign, dead;
- bool reverse;
- u_char option[NOPTIONS];
- int pawndir[2] = { -10, 10 };
- int lastmovefrom = 0;
- int lastmoveto = 0;
- MOVELIST movelist = (MOVELIST)NULL;
-
- Display *display;
- OpaqueFrame frame;
-
- char *malloc();
- long random();
-
- main(argc, argv)
- char **argv;
- {
- int i;
- u_short port=0;
- char *displayname = NULL;
- char *program;
- char *geometry = NULL;
- char *cp;
-
- if (program = rindex(argv[0], '/'))
- program++;
- else
- program = argv[0];
- for(i = 0; i < NOPTIONS; i++)
- option[i] = UNSET;
- srandom(time(0) ^ getpid());
- argc--; argv++;
- while (argc) {
- if (*argv[0] == '-' || *argv[0] == '+') {
- if (*argv[0] == '-')
- i = FALSE;
- else
- i = TRUE;
- while (*++(*argv))
- switch (*argv[0]) {
- case 'b':
- option[COLOR] = BLACK;
- break;
- case 'w':
- option[COLOR] = WHITE;
- break;
- case 'c':
- option[COLOR] = RANDOM;
- break;
- case 'a':
- option[ANNOUNCETAKES] = i;
- break;
- case 'p':
- option[ANNOUNCEPAWNS] = i;
- break;
- case 'r':
- reverse = TRUE;
- break;
- case 's':
- iamserver = i;
- break;
- default:
- goto usage;
- }
- argv++; argc--;
- continue;
- }
- if ((cp = index(*argv, ':')) && isdigit(cp[1])) {
- displayname = *argv;
- argv++; argc--;
- continue;
- }
- if (*argv[0] == '=') {
- geometry = *argv;
- argv++; argc--;
- continue;
- }
- break;
- }
- if (argc != 1) {
- usage:
- fprintf(stderr, "Usage: xks [-+][bwcaprs] [=[width]x[height][[+-]xoff[[+-]yoff]]]\n");
- fprintf(stderr, "\t[display:name] user[@host]\n");
- exit(1);
- }
-
- display = XOpenDisplay(displayname);
- if (display == NULL) {
- fprintf(stderr, "Can't open display %s\n", displayname);
- exit(1);
- }
-
- frame.border = WhitePixmap;
- frame.background = BlackPixmap;
- frame.bdrwidth = 2;
- window = XCreate("xks", program, geometry, "=0x0+0+0", &frame,
- 64*8+1, 64*9+18*3+TOPSPACE);
- if (window == 0) {
- fprintf(stderr, "Can't create window\n");
- cleanup(1);
- }
-
- XMapWindow(window);
- initdirlists();
- initpiecelocs();
- font = XGetFont("timrom12bsx");
- if (font == 0) {
- fprintf(stderr, "Can't get font.\n");
- }
- screen_init();
- p_init();
- signal(SIGINT, cleanup);
- message("Connecting...", MESSAGE);
- XFlush();
- connectport(*argv, port);
- dooptions();
- if (ourcolor == WHITE) {
- message("--- WHITE ---", MESSAGE);
- reverse = FALSE;
- } else
- message("--- BLACK ---", MESSAGE);
- initboard(FALSE);
- redraw();
- movecycle();
- }
-
- cleanup(sig)
- int sig;
- {
- if (out)
- fputs(out, "resign\r\n");
- XCloseDisplay(display);
- exit(sig);
- }
-